﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using QuanLy.Class;
using Common;

namespace WoodManager.UI
{
    public partial class NhomModuleVan : Form
    {
        ConnectManager cm = new ConnectManager();
        Validator vali = new Validator();
        DataTable tbNhomModule, tbPhanNhom;
        string sMaNhomOld = "";
        string sMaPhanNhomOld = "";
        bool isFormLoad = false;
        

        public NhomModuleVan()
        {
            InitializeComponent();
        }

        private void ModuleVan_Load(object sender, EventArgs e)
        {
            loadDataNhomModule();

            loadDataPhanNHom(cbbTenNhom.SelectedValue.ToString());
            if (cbbPhanNhom.Items.Count > 0)
            {
                sMaPhanNhomOld = cbbPhanNhom.SelectedValue.ToString();
                btnXoa.Enabled = false;
            }
            else
            {
                btnXoa.Enabled = true;
            }
            isFormLoad = true;
        }

        private void loadDataNhomModule()
        {
            tbNhomModule = cm.getTable("select * from NhomModule");
            if (tbNhomModule.Rows.Count > 0)
            {
                cbbTenNhom.DataSource = tbNhomModule;
                cbbTenNhom.DisplayMember = "TenNhomModule";
                cbbTenNhom.ValueMember = "NhomModuleID";
                txtMaNhom.Text = cbbTenNhom.SelectedValue.ToString();
                sMaNhomOld = txtMaNhom.Text;
            }
            else
            {
                cbbTenNhom.DataSource = null;
                txtMaNhom.Text = "";
            }
            
        }

        private void loadDataPhanNHom(string sNhomID)
        {
            tbPhanNhom = cm.getTable("select * from PhanNhomModule where NhomID = N'"+ sNhomID +"'");
            if (tbPhanNhom.Rows.Count > 0)
            {
                cbbPhanNhom.DataSource = tbPhanNhom;
                cbbPhanNhom.DisplayMember = "TenPhanNhom";
                cbbPhanNhom.ValueMember = "PhanNhomID";
                txtMaPhanNhom.Text = cbbPhanNhom.SelectedValue.ToString();
                sMaNhomOld = txtMaNhom.Text;
            }
            else
            {
                cbbPhanNhom.DataSource = null;
                txtMaPhanNhom.Text = "";
            }

        }

        private void cbbTenNhom_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cbbTenNhom.SelectedIndex != -1)
            {
                txtMaNhom.Text = cbbTenNhom.SelectedValue.ToString();
                sMaNhomOld = txtMaNhom.Text;

                // Load data phan nhom module
                if (isFormLoad)
                {
                    loadDataPhanNHom(sMaNhomOld);
                    if (cbbPhanNhom.Items.Count > 0)
                    {
                        btnXoa.Enabled = false;
                    }
                    else
                    {
                        btnXoa.Enabled = true;
                    }
                }
            }
        }

        private void btnTao_Click(object sender, EventArgs e)
        {
            if ((txtMaNhom.Text == "") || (cbbTenNhom.Text == ""))
            {
                MessageBox.Show("Không được để trống");
                return;
            }
            if (!vali.checkDuplicate(txtMaNhom.Text, tbNhomModule, 0))
            {
                string insert1 = "InsertNhomModule N'" + txtMaNhom.Text + "', N'" + cbbTenNhom.Text + "'";
                SqlCommand sqlInsert = new SqlCommand(insert1, cm.conn);
                if (cm.conn.State == ConnectionState.Closed)
                    cm.conn.Open();

                sqlInsert.ExecuteNonQuery();
                loadDataNhomModule();
                cbbTenNhom.Focus();

                cm.conn.Close();
            }


        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            if ((txtMaNhom.Text == "") || (cbbTenNhom.Text == ""))
            {
                MessageBox.Show("Không được để trống");
                return;
            }
            if (!vali.checkDuplicate(txtMaNhom.Text, tbNhomModule, 0))
            {
                string update1 = "UpdateNhomModule N'" + txtMaNhom.Text + "',N'" + cbbTenNhom.Text + "',N'" + sMaNhomOld + "'";
                sMaNhomOld = txtMaNhom.Text;
                SqlCommand sqlUpdate = new SqlCommand(update1, cm.conn);
                if (cm.conn.State == ConnectionState.Closed)
                    cm.conn.Open();
                try
                {
                    sqlUpdate.ExecuteNonQuery();
                    loadDataNhomModule();
                    cbbTenNhom.Focus();

                    for (int i = 0; i < tbNhomModule.Rows.Count; i++)
                    {
                        if (tbNhomModule.Rows[i]["NhomModuleID"].ToString() == sMaNhomOld)
                        {
                            cbbTenNhom.SelectedIndex = i;
                            break;
                        }
                    }
                    cm.conn.Close();                	
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("Update dữ liệu không thành công");
                    cm.conn.Close();                	
                }
            }
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            if ((txtMaNhom.Text == "") || (cbbTenNhom.Text == ""))
            {
                MessageBox.Show("Không tìm thấy thông tin cần xóa");
                return;
            }
            if (txtMaNhom.Text != sMaNhomOld)
            {
                MessageBox.Show("Tên và mã nhóm không khớp với nhau");
                return;
            }

            string del1 = "Delete NhomModule where NhomModuleID = N'" + sMaNhomOld + "'";
            SqlCommand sqlDel = new SqlCommand(del1, cm.conn);
            if (cm.conn.State == ConnectionState.Closed)
                cm.conn.Open();
            try
            {
                sqlDel.ExecuteNonQuery();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("Xóa dữ liệu không thành công");
            }
            MessageBox.Show("Đã xóa thành công");
            loadDataNhomModule();
            cm.conn.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if ((txtMaPhanNhom.Text == "") || (cbbPhanNhom.Text == ""))
            {
                MessageBox.Show("phân nhóm không được để trống");
                return;
            }
            if ((tbPhanNhom == null) || (!vali.checkDuplicate(
                    cbbTenNhom.SelectedValue.ToString() + txtMaPhanNhom.Text, 
                    tbPhanNhom, 
                    0)) )
            {
                string insert1 = "PhanNhomModule_add N'" + txtMaPhanNhom.Text   + "', N'" 
                                                        + cbbPhanNhom.Text       + "', N'"
                                                        + cbbTenNhom.SelectedValue.ToString() + "'";
                SqlCommand sqlInsert = new SqlCommand(insert1, cm.conn);
                try
                {
                    if (cm.conn.State == ConnectionState.Closed)
                        cm.conn.Open();
                    sqlInsert.ExecuteNonQuery();
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("Thêm dữ liệu không thành công");
                }

                loadDataPhanNHom(cbbTenNhom.SelectedValue.ToString());
                cbbPhanNhom.Focus();
                cm.conn.Close();
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if ((txtMaPhanNhom.Text == "") || (cbbPhanNhom.Text == ""))
            {
                MessageBox.Show("Không được để trống");
                return;
            }
            string update1 = "PhanNhomModule_update N'" + txtMaPhanNhom.Text + "',N'" + cbbPhanNhom.Text + "',N'" 
                                                        + sMaPhanNhomOld + "'";
            SqlCommand sqlUpdate = new SqlCommand(update1, cm.conn);
            if (cm.conn.State == ConnectionState.Closed)
                cm.conn.Open();
            try
            {
                sqlUpdate.ExecuteNonQuery();
                sMaPhanNhomOld = txtMaPhanNhom.Text;
                loadDataPhanNHom(cbbTenNhom.SelectedValue.ToString());
                cbbPhanNhom.Focus();
                for (int i = 0; i < tbNhomModule.Rows.Count; i++)
                {
                    if (tbPhanNhom.Rows[i]["PhanNhomID"].ToString() == sMaPhanNhomOld)
                    {
                        cbbPhanNhom.SelectedIndex = i;
                        break;
                    }
                }
                cm.conn.Close();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("Update dữ liệu không thành công");
                cm.conn.Close();
            }
        }

        private void cbbPhanNhom_SelectedIndexChanged(object sender, EventArgs e)
        {
            if ( ( tbPhanNhom.Rows.Count > 0 ) && (cbbTenNhom.SelectedIndex != -1) )
            {
                txtMaPhanNhom.Text = cbbPhanNhom.SelectedValue.ToString();
                sMaPhanNhomOld = txtMaPhanNhom.Text;
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if ((txtMaPhanNhom.Text == "") || (cbbPhanNhom.Text == ""))
            {
                MessageBox.Show("Không tìm thấy thông tin cần xóa");
                return;
            }
            if (txtMaPhanNhom.Text != sMaPhanNhomOld)
            {
                MessageBox.Show("Tên và mã phân nhóm không khớp với nhau");
                return;
            }

            string del1 = "Delete PhanNhomModule where PhanNhomID = N'" + sMaPhanNhomOld + "'";
            SqlCommand sqlDel = new SqlCommand(del1, cm.conn);
            if (cm.conn.State == ConnectionState.Closed)
                cm.conn.Open();
            sqlDel.ExecuteNonQuery();
            MessageBox.Show("Đã xóa thành công");
            loadDataPhanNHom(sMaNhomOld);
            cm.conn.Close();
        }
    }
}
